package com.字符集;


import java.io.UnsupportedEncodingException;
import java.util.Arrays;

/**
 * 学会自己进行文字的编码和解码
 */

public class Demo1 {
    public static void main(String[] args) throws Exception {
        //1.编码：String.getBytes() 将文字转换为字节（可以使用String的默认编码，也可以使用指定编码）
        String test="abc我爱你中国";
        byte[] bytes=test.getBytes();//返回一个字节数组（采用String默认编码机制）
        //获取字节的长度
        System.out.println(bytes.length);
        //获取编译后的字节(字节也是数字，是基本数据类型里面的)
        System.out.println(Arrays.toString(bytes));
        //[97, 98, 99, -26, -120, -111, -25, -120, -79, -28, -67, -96, -28, -72, -83, -27, -101, -67]
        //可以看到中文都是负数，单个字节表示一个文字

        //2.使用指定编码机制
        byte[] gbks = test.getBytes("GBK");
        System.out.println(gbks.length);
        System.out.println(Arrays.toString(gbks));
        //[97, 98, 99, -50, -46, -80, -82, -60, -29, -42, -48, -71, -6]
        //可以看到字符是一个字节，文字是两个字节，文字都是负数


        //解码：编译前和编译后要使用同一种编码，否则报错
        String s=new String(gbks);
        System.out.println(s);
        //abc�Ұ����й�     乱码

        String s1=new String(bytes);
        System.out.println(s1);
        //abc我爱你中国



    }
}
